# 1. 具备django的运行环境
import os
import django

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'meiduo_mall.settings')
django.setup()


from django.template import loader
from django.conf import settings

from utils.goods import get_specs, get_breadcrumb, get_categories
from apps.goods.models import SKU

#  2. 定义生成静态网页的函数
def generic_detail_html(sku):
    # 得到sku的网页内容  写入 /root/front_end_pc/goods/13.html 中
    # 1. 得到一个模板对象
    template = loader.get_template('detail.html')
    # 2. 构建上下文参数
    context = {
        'sku': sku,
        'categories': get_categories(),
        'breadcrumb': get_breadcrumb(sku.category.id),
        'specs': get_specs(sku)
    }
    # 3. 利用模板对象的render方法进行动态渲染，得到结果
    html_content = template.render(context)
    html_file_name = os.path.join(
        settings.DETAIL_HTML_DIR_PATH, '{}.html'.format(sku.id))

    with open(html_file_name, 'w', encoding='utf-8') as f:
        f.write(html_content)
        print('写入{}静态文件成功'.format(html_file_name))


if __name__ == '__main__':
    skus = SKU.objects.all()
    for sku in skus:
        generic_detail_html(sku)